
struct CCAffineTransform {
    CGFloat a, b, c, d;
    CGFloat tx, ty;
};

CCAffineTransform __CCAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty);
CCAffineTransform CCAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty);

CCPoint __CCPointApplyAffineTransform(CCPoint point, CCAffineTransform t);
CCPoint CCPointApplyAffineTransform(CCPoint point, CCAffineTransform t);

CCSize CCSizeApplyAffineTransform(CCSize size, CCAffineTransform t);
CCSize __CCSizeApplyAffineTransform(CCSize size, CCAffineTransform t);

CCAffineTransform CCAffineTransformMakeIdentity();
CCRect CCRectApplyAffineTransform(CCRect rect, CCAffineTransform anAffineTransform);

CCAffineTransform CCAffineTransformTranslate(CCAffineTransform t, float tx, float ty);
CCAffineTransform CCAffineTransformRotate(CCAffineTransform aTransform, CGFloat anAngle);
CCAffineTransform CCAffineTransformScale(CCAffineTransform t, CGFloat sx, CGFloat sy);
CCAffineTransform CCAffineTransformConcat(CCAffineTransform t1,CCAffineTransform t2);
bool CCAffineTransformEqualToTransform(CCAffineTransform t1,CCAffineTransform t2);
CCAffineTransform CCAffineTransformInvert(CCAffineTransform t);
